home *** CD-ROM | disk | FTP | other *** search
/ Aminet 31 / Aminet 31 (1999)(Schatztruhe)[!][Jun 1999].iso / Aminet / util / misc / rgbpch.lha / rgbpch / rgbpatch.asm < prev    next >
Assembly Source File  |  1999-04-15  |  3KB  |  122 lines

  1. *
  2. * SetRGB32 patch
  3. *
  4.  
  5. * LoadRGB32()
  6. * SetRGB32()
  7. * SetRGB32CM()
  8.  
  9.                 include "exec/macros.i"
  10.                 include "lvos/exec_lib.i"
  11.  
  12.                 xdef    _pSTART
  13.                 xdef    _pEND
  14.  
  15.                 xdef    _setfnc
  16.  
  17.  
  18. _pSTART
  19.  
  20. ******************************************************************
  21. _pLoadRGB32        movem.l    d0-d7/a0-a6,-(sp)
  22.                 tst.l    a1
  23.                 beq        .lend
  24.                 moveq    #-1,d1                ; test 0xffffffff
  25. .lnt            clr.l    d0
  26.                 move.w    (a1),d0                ; read 'count'
  27.                 beq        .lend                ; table over
  28.                 subq.l    #1,d0                ; fix counter
  29.                 addq.l    #4,a1                ; skip 'count.w'&'first color.w'
  30. .lc                cmp.l    (a1),d1                ; RED
  31.                 bne        .lec
  32.                 cmp.l    4(a1),d1            ; GREEN
  33.                 bne        .lec
  34.                 cmp.l    8(a1),d1            ; BLUE
  35.                 bne        .lec
  36.                 sub.l    #$01010101,(a1)        ; max white -> 0xfefefefe
  37.                 sub.l    #$01010101,4(a1)
  38.                 sub.l    #$01010101,8(a1)
  39. .lec            addq.l    #8,a1                ; next item
  40.                 addq.l    #4,a1
  41.                 dbra    d0,.lc
  42.                 bra        .lnt
  43. .lend            movem.l    (sp)+,d0-d7/a0-a6
  44.                 jmp        ([_pOldLoadRGB32,pc])
  45. ;-----------------------------------------------------------------
  46. _pOldLoadRGB32    dc.l    0
  47.  
  48. ******************************************************************
  49. _pSetRGB32        movem.l    d0/d4-d7/a0-a6,-(sp)
  50.                 moveq    #-1,d0
  51.                 cmp.l    d0,d1            ; RED
  52.                 bne        .send
  53.                 cmp.l    d0,d2            ; GREEN
  54.                 bne        .send
  55.                 cmp.l    d0,d3            ; BLUE
  56.                 bne        .send
  57.                 sub.l    #$01010101,d1    ; max white -> 'fe's
  58.                 sub.l    #$01010101,d2
  59.                 sub.l    #$01010101,d3
  60. .send            movem.l    (sp)+,d0/d4-d7/a0-a6
  61.                 jmp        ([_pOldSetRGB32,pc])
  62. ;-----------------------------------------------------------------
  63. _pOldSetRGB32    dc.l    0
  64.  
  65. ******************************************************************
  66. _pSetRGB32CM    movem.l    d0/d4-d7/a0-a6,-(sp)
  67.                 moveq    #-1,d0
  68.                 cmp.l    d0,d1            ; RED
  69.                 bne        .scend
  70.                 cmp.l    d0,d2            ; GREEN
  71.                 bne        .scend
  72.                 cmp.l    d0,d3            ; BLUE
  73.                 bne        .scend
  74.                 sub.l    #$01010101,d1    ; max white -> 'fe's
  75.                 sub.l    #$01010101,d2
  76.                 sub.l    #$01010101,d3
  77. .scend            movem.l    (sp)+,d0/d4-d7/a0-a6
  78.                 jmp        ([_pOldSetRGB32CM,pc])
  79. ;-----------------------------------------------------------------
  80. _pOldSetRGB32CM    dc.l    0
  81.  
  82. _pEND
  83.  
  84. * a0: mem
  85. * a1: gfxbase
  86. _setfnc            movem.l    d0-d7/a0-a6,-(sp)
  87.                 move.l    #_pEND,d0
  88.                 sub.l    #_pSTART,d0
  89.                 move.l    #_pSTART,d1
  90.                 move.l    d1,a2
  91.                 moveq    #0,d1
  92. .ck                move.b    (a2,d1.l),(a0,d1.l)
  93.                 addq.l    #1,d1
  94.                 dbra    d0,.ck
  95.                 move.l    $00000004,a6
  96.                 move.l    a1,a5
  97.                 move.l    a0,a3
  98.  
  99.                 move.l    a5,a1
  100.                 move.l    a3,d0
  101.                 add.l    #_pLoadRGB32-_pSTART,d0
  102.                 move.w    #-882,a0
  103.                 jsr    _LVOSetFunction(a6)
  104.                 move.l    d0,_pOldLoadRGB32-_pSTART(a3)
  105.  
  106.                 move.l    a5,a1
  107.                 move.l    a3,d0
  108.                 add.l    #_pSetRGB32-_pSTART,d0
  109.                 move.w    #-852,a0
  110.                 jsr    _LVOSetFunction(a6)
  111.                 move.l    d0,_pOldSetRGB32-_pSTART(a3)
  112.  
  113.                 move.l    a5,a1
  114.                 move.l    a3,d0
  115.                 add.l    #_pSetRGB32CM-_pSTART,d0
  116.                 move.w    #-996,a0
  117.                 jsr    _LVOSetFunction(a6)
  118.                 move.l    d0,_pOldSetRGB32CM-_pSTART(a3)
  119.  
  120.                 movem.l    (sp)+,d0-d7/a0-a6
  121.                 rts
  122.